module.exports = function(e) {
    var n = "[a-z'][a-zA-Z0-9_']*", i = "(" + n + ":" + n + "|" + n + ")", r = {
        keyword: "after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",
        literal: "false true"
    }, a = e.COMMENT("%", "$"), s = {
        className: "number",
        begin: "\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",
        relevance: 0
    }, c = {
        begin: "fun\\s+" + n + "/\\d+"
    }, t = {
        begin: i + "\\(",
        end: "\\)",
        returnBegin: !0,
        relevance: 0,
        contains: [ {
            begin: i,
            relevance: 0
        }, {
            begin: "\\(",
            end: "\\)",
            endsWithParent: !0,
            returnEnd: !0,
            relevance: 0
        } ]
    }, d = {
        begin: "{",
        end: "}",
        relevance: 0
    }, o = {
        begin: "\\b_([A-Z][A-Za-z0-9_]*)?",
        relevance: 0
    }, l = {
        begin: "[A-Z][a-zA-Z0-9_]*",
        relevance: 0
    }, b = {
        begin: "#" + e.UNDERSCORE_IDENT_RE,
        relevance: 0,
        returnBegin: !0,
        contains: [ {
            begin: "#" + e.UNDERSCORE_IDENT_RE,
            relevance: 0
        }, {
            begin: "{",
            end: "}",
            relevance: 0
        } ]
    }, g = {
        beginKeywords: "fun receive if try case",
        end: "end",
        keywords: r
    };
    g.contains = [ a, c, e.inherit(e.APOS_STRING_MODE, {
        className: ""
    }), g, t, e.QUOTE_STRING_MODE, s, d, o, l, b ];
    var u = [ a, c, g, t, e.QUOTE_STRING_MODE, s, d, o, l, b ];
    t.contains[1].contains = u, d.contains = u, b.contains[1].contains = u;
    var E = {
        className: "params",
        begin: "\\(",
        end: "\\)",
        contains: u
    };
    return {
        aliases: [ "erl" ],
        keywords: r,
        illegal: "(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",
        contains: [ {
            className: "function",
            begin: "^" + n + "\\s*\\(",
            end: "->",
            returnBegin: !0,
            illegal: "\\(|#|//|/\\*|\\\\|:|;",
            contains: [ E, e.inherit(e.TITLE_MODE, {
                begin: n
            }) ],
            starts: {
                end: ";|\\.",
                keywords: r,
                contains: u
            }
        }, a, {
            begin: "^-",
            end: "\\.",
            relevance: 0,
            excludeEnd: !0,
            returnBegin: !0,
            lexemes: "-" + e.IDENT_RE,
            keywords: "-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",
            contains: [ E ]
        }, s, e.QUOTE_STRING_MODE, b, o, l, d, {
            begin: /\.$/
        } ]
    };
};